[toc]
23年5月规划
基于12张GPU,6颗CPU,以及100T硬盘,基于docker 配置深度学习开发环境。虚拟化17个**独立计算机Independent computer(IC),其中有15台**独立开发计算机Independent development computer(IDC),2台 独立训练计算机Independent training computer(ITC)。
每台IDC 规划了3套工具:Winscp+Putty-SSH 终端、Jupyter工具、Jenkins 训练服务器任务管理工具,进行深度学习开发任务。
每台ITC 可以完整复制IDC 的环境,启动训练任务。
集群逻辑结构
向ITC推送IDC环境进行深度学习训练原理
23年10月规划
每台ITC 增加两个独立端口用于TensorBoard 访问。
23年11月规划
新增规划 20个 Desktop VNC 端口桌面访问。
演示
Putty-SSH 终端演示动画
Jupyter演示动画
Jenkins演示动画
功能1:SSH 的Tunnle端口映射服务
功能2:向ITC推送IDC镜像,进行训练服务
功能3:统计IDC的资源占用情况,手动重启IDC等功能
功能4:IDC的自定义功能,例如启动深度学习评估,启动tensorboard面板,启动可视化渲染结果
功能5:启动仿真镜像
补充说明
- 内网镜像源 http://10.x.x.x:x
deb http://10.x.x.x:xx/ubuntu/ bionic main restricted universe multiverse deb http://10.x.x.x:x/ubuntu/ bionic-security main restricted universe multiverse deb http://10.x.x.x:x/ubuntu/ bionic-updates main restricted universe multiverse deb http://10.x.x.x:x/ubuntu/ bionic-backports main restricted universe multiverse
- 配置统一的pubkey(var/id_rsa.pub)。
- slaver 节点的apt 源设置为 内网镜像服务器 。
- slaver 节点安装miniconda(/root/miniconda3/bin/conda, py38_23.3.1),并设置源为 清华。
- slaver 节点安装最新nvidia-470驱动(关闭自动更新)。
- slaver 节点安装cuda11.4.4,训练资源 nvidia-smi。
- slaver 节点未安装cudnn,自行在conda里面安装。
- slaver 节点共享挂载NFS目录。
- slaver节点的 修改DNS (未实施)
sudo vi /etc/resolv.conf nameserver 114.114.115.115
- slaver节点安装conda create –name openmmlab python=3.8 -y
- slaver节点的conda openmmlab 环境安装 jupyter ,jupyter 工作目录为
/var
conda install -y jupyter jupyter notebook --generate-config
- slaver节点的 pip
~/.pip/pip.conf [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host= pypi.tuna.tsinghua.edu.cn
-
slaver节点的conda openmmlab 环境的安装mmcv,测试mmdet 通过 (https://github.com/open-mmlab/mmdetection/blob/main/docs/zh_cn/get_started.md)
-
slaver节点配置了一个统一的初始化脚本。
echo "ssh starting"
service ssh start
echo "starting jupyter..."
pid=`ps -ef|grep "jupyter-notebook --allow-root"| grep -v "grep"|awk '{print $2}'`
if [ "$pid" != "" ]
then
echo "jupyter notebook already run, needn't to start again"
else
echo "starting now..."
conda activate openmmlab && nohup jupyter notebook --allow-root > jypyter.out 2>&1 &
pid=`ps -ef|grep "jupyter-notebook --allow-root"| grep -v "grep"|awk '{print $2}'`
echo ${pid} > pid.out
echo "jupyter started at pid: "${pid}
fi